Introduction

This is our R Notebook, showing the steps we took to complete the Final Project for CS 329E. This notebook includes step-by-step instructions on how to reproduce our project. To obtain our data, we used data.world.

R Configuration

Below we display our sessionInfo().

sessionInfo(package=NULL)

Data Description

The data was found on “Dr. John Rasp’s Statistics Website” (http://www2.stetson.edu/~jrasp/data.htm). It is a subset of the data from College Scorecard, a Department of Education website that gives data on various variables regarding tuition, costs and school performance.

An explanatory key for the recorded variables can be found here: https://data.world/jlee/s-17-dv-final-project/file/CollegeScorecard_ColumnNames.pdf

Cleaning Data

Here’s our ETL file to clean our data set.

source("../01 Data/R_ETL.CollegeScorecard.R")

Cleaned up Data Download

Cleaned data can be downloaded from Data.world as a .csv file. Because the dataset is so large, we filtered to only show some rows.

Hosting User: jlee
Database: S17 DV Final Project
Dataset Name: CollegeScorecard.csv

Download Link: https://query.data.world/s/dv5dl8q1jx2qb3d3bd2976b9d

source("../01 Data/Accessdataworld.R")

Side by Side Shiny and Tableau Visualizations

Descriptions: Refer to visualization captions for individual descriptions.

Boxplot: Average Cost of Attendance for Type of School

These boxplots (Tableau left, Shiny right) demonstrate

Histogram: SAT Averages for Universities

These histograms (Tableau left, Shiny right) dfddf

Scatterplot: Instructional Expenditures vs. Net tuition

These scatterplots (Tableau left, Shiny right) explore the correlation between Instructional expenditures per full-time equivalent student and Net tuition revenue per full-time equivalent student.

Crosstab 1: Instructional Expenditures / Cost of Attendance

These crosstabs (Tableau left, Shiny right) xxxx

Crosstab 2: Tuition Revenue / Total Cost

These crosstabs (Tableau left, Shiny right) xxxx

Map 1: Region Cost of Attendance (Instructional Expenditures / Cost of Attendance)

These maps (Tableau left, Shiny right) demonstrate the distribution of instructional expenditure / cost of attendance ratio across the United States, where darker colors indicate higher ratios.



Map 2: Tuition Revenue to Total Cost

These maps (Tableau left, Shiny right) demonstrate the distribution of tuition revenue / total cost ratio across the United States, where darker colors indicate higher ratios.

Barchart: Instructional Expense per Type of Instutition


These barcharts (Tableau left, Shiny right) xxxx

Shiny Visualization and Published Application

Description: Full size static .pngs of the Shiny application, as well as a link to the live published version.

Published Link:
https://ehjkim.shinyapps.io/shinyfinal/

Boxplot: Average Cost of Attendance for Type of School




Histogram: SAT Averages for Universities




Scatterplot: Instructional Expenditures vs. Net tuition




Crosstab 1: Instructional Expenditures/Cost of Attendance




Crosstab 2: Tuition Revenue / Total Cost




Map 1: Region Cost of Attendance (Instructional Expenditures / Cost of Attendance)




Map 2: Tuition Revenue to Total Cost




Barchart: Instructional Expense per Type of Instutition




Tableau / Tableau Action Generated Visualizations

Descriptions: Full size static .pngs of the tableau visualizations. Refer to visualization captions for individual descriptions.

Boxplot: Average Cost of Attendance for Type of School




Histogram: SAT Averages for Universities




Scatterplot: Instructional Expenditures vs. Net tuition




Crosstab 1: Instructional Expenditures/Cost of Attendance




Crosstab 2: Tuition Revenue / Total Cost




Map 1: Region Cost of Attendance (Instructional Expenditures / Cost of Attendance)




Map 2: Tuition Revenue to Total Cost




Barchart: Instructional Expense per Type of Instutition




LS0tDQp0aXRsZTogIjxjZW50ZXI+PGI+Q29sbGVnZSBTY29yZWNhcmQ8L2I+PC9jZW50ZXI+Ig0KYXV0aG9yOiAiPGNlbnRlcj48Yj5ZdS1DaGlhbyBGYW5nLCBFbGl6YWJldGggS2ltLCBTZXVuZyBIb29uIExlZSwgT3JsYW5kbyBSZWF0ZWd1aTwvYj48L2NlbnRlcj4iDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHllcw0KLS0tDQoNCiMqKkludHJvZHVjdGlvbioqDQpUaGlzIGlzIG91ciBSIE5vdGVib29rLCBzaG93aW5nIHRoZSBzdGVwcyB3ZSB0b29rIHRvIGNvbXBsZXRlIHRoZSBGaW5hbCBQcm9qZWN0IGZvciBDUyAzMjlFLiBUaGlzIG5vdGVib29rIGluY2x1ZGVzIHN0ZXAtYnktc3RlcCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlcHJvZHVjZSBvdXIgcHJvamVjdC4gVG8gb2J0YWluIG91ciBkYXRhLCB3ZSB1c2VkIGRhdGEud29ybGQuIA0KDQojKipSIENvbmZpZ3VyYXRpb24qKg0KQmVsb3cgd2UgZGlzcGxheSBvdXIgc2Vzc2lvbkluZm8oKS4NCg0KYGBge3Igc2Vzc2lvbkluZm99DQpzZXNzaW9uSW5mbyhwYWNrYWdlPU5VTEwpDQpgYGANCg0KIyoqRGF0YSBEZXNjcmlwdGlvbioqDQpUaGUgZGF0YSB3YXMgZm91bmQgb24gIkRyLiBKb2huIFJhc3AncyBTdGF0aXN0aWNzIFdlYnNpdGUiIChodHRwOi8vd3d3Mi5zdGV0c29uLmVkdS9+anJhc3AvZGF0YS5odG0pLiBJdCBpcyBhIHN1YnNldCBvZiB0aGUgZGF0YSBmcm9tIENvbGxlZ2UgU2NvcmVjYXJkLCBhIERlcGFydG1lbnQgb2YgRWR1Y2F0aW9uIHdlYnNpdGUgdGhhdCBnaXZlcyBkYXRhIG9uIHZhcmlvdXMgdmFyaWFibGVzIHJlZ2FyZGluZyB0dWl0aW9uLCBjb3N0cyBhbmQgc2Nob29sIHBlcmZvcm1hbmNlLiA8L2JyPg0KDQpBbiBleHBsYW5hdG9yeSBrZXkgZm9yIHRoZSByZWNvcmRlZCB2YXJpYWJsZXMgY2FuIGJlIGZvdW5kIGhlcmU6IGh0dHBzOi8vZGF0YS53b3JsZC9qbGVlL3MtMTctZHYtZmluYWwtcHJvamVjdC9maWxlL0NvbGxlZ2VTY29yZWNhcmRfQ29sdW1uTmFtZXMucGRmIDwvYnI+DQoNCiMqKkNsZWFuaW5nIERhdGEqKg0KSGVyZSdzIG91ciBFVEwgZmlsZSB0byBjbGVhbiBvdXIgZGF0YSBzZXQuDQoNCmBgYHtyfQ0Kc291cmNlKCIuLi8wMSBEYXRhL1JfRVRMLkNvbGxlZ2VTY29yZWNhcmQuUiIpDQpgYGANCg0KIyoqQ2xlYW5lZCB1cCBEYXRhIERvd25sb2FkKioNCkNsZWFuZWQgZGF0YSBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIERhdGEud29ybGQgYXMgYSAuY3N2IGZpbGUuIEJlY2F1c2UgdGhlIGRhdGFzZXQgaXMgc28gbGFyZ2UsIHdlIGZpbHRlcmVkIHRvIG9ubHkgc2hvdyBzb21lIHJvd3MuDQoNCkhvc3RpbmcgVXNlcjogamxlZTwvYnI+DQpEYXRhYmFzZTogUzE3IERWIEZpbmFsIFByb2plY3Q8L2JyPg0KRGF0YXNldCBOYW1lOiBDb2xsZWdlU2NvcmVjYXJkLmNzdg0KDQpEb3dubG9hZCBMaW5rOiBodHRwczovL3F1ZXJ5LmRhdGEud29ybGQvcy9kdjVkbDhxMWp4MnFiM2QzYmQyOTc2YjlkDQoNCmBgYHtyfQ0Kc291cmNlKCIuLi8wMSBEYXRhL0FjY2Vzc2RhdGF3b3JsZC5SIikNCmBgYA0KDQoNCiMqKlNpZGUgYnkgU2lkZSBTaGlueSBhbmQgVGFibGVhdSBWaXN1YWxpemF0aW9ucyoqDQoqKkRlc2NyaXB0aW9uczoqKiBSZWZlciB0byB2aXN1YWxpemF0aW9uIGNhcHRpb25zIGZvciBpbmRpdmlkdWFsIGRlc2NyaXB0aW9ucy48L2JyPjwvYnI+DQo8Yj5Cb3hwbG90OiBBdmVyYWdlIENvc3Qgb2YgQXR0ZW5kYW5jZSBmb3IgVHlwZSBvZiBTY2hvb2w8L2I+IDwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9BdmVyYWdlIENvc3Qgb2YgQXR0ZW5kYW5jZSBmb3IgVHlwZSBvZiBTY2hvb2wgQm94cGxvdCAoVGFibGVhdSkucG5nKXsgd2lkdGg9NDklIH0NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9Cb3hwbG90LnBuZyl7IHdpZHRoPTQ5JSB9DQpUaGVzZSBib3hwbG90cyAoVGFibGVhdSBsZWZ0LCBTaGlueSByaWdodCkgZGVtb25zdHJhdGUgPC9icj48L2JyPg0KDQo8Yj5IaXN0b2dyYW06IFNBVCBBdmVyYWdlcyBmb3IgVW5pdmVyc2l0aWVzPC9iPiA8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvU0FUX0FWRyBIaXN0b2dyYW0gKFRhYmxlYXUpLnBuZyl7IHdpZHRoPTQ5JSB9DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvSGlzdG9ncmFtLnBuZyl7IHdpZHRoPTQ5JSB9DQpUaGVzZSBoaXN0b2dyYW1zIChUYWJsZWF1IGxlZnQsIFNoaW55IHJpZ2h0KSBkZmRkZjwvYnI+PC9icj4NCg0KPGI+U2NhdHRlcnBsb3Q6IEluc3RydWN0aW9uYWwgRXhwZW5kaXR1cmVzIHZzLiBOZXQgdHVpdGlvbjwvYj4gPC9icj48L2JyPg0KIVtdKC4uLzAzIFZpc3VhbGl6YXRpb25zL1NjYXR0ZXIgUGxvdCAoVGFibGVhdSkucG5nKXsgd2lkdGg9NDklIH0NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9TY2F0dGVycGxvdC5wbmcpeyB3aWR0aD00OSUgfQ0KVGhlc2Ugc2NhdHRlcnBsb3RzIChUYWJsZWF1IGxlZnQsIFNoaW55IHJpZ2h0KSBleHBsb3JlIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIEluc3RydWN0aW9uYWwgZXhwZW5kaXR1cmVzIHBlciBmdWxsLXRpbWUgZXF1aXZhbGVudCBzdHVkZW50IGFuZCBOZXQgdHVpdGlvbiByZXZlbnVlIHBlciBmdWxsLXRpbWUgZXF1aXZhbGVudCBzdHVkZW50Lg0KPC9icj48L2JyPg0KDQoNCjxiPkNyb3NzdGFiIDE6IEluc3RydWN0aW9uYWwgRXhwZW5kaXR1cmVzIC8gQ29zdCBvZiBBdHRlbmRhbmNlPC9iPiA8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQ3Jvc3N0YWIgKyBLUEkgdyBTZXQgMSAoVGFibGVhdSkucG5nKXsgd2lkdGg9NDklIH0NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9rcGkxLnBuZyl7IHdpZHRoPTQ5JSB9DQpUaGVzZSBjcm9zc3RhYnMgKFRhYmxlYXUgbGVmdCwgU2hpbnkgcmlnaHQpIHh4eHgNCjwvYnI+PC9icj4NCg0KPGI+Q3Jvc3N0YWIgMjogVHVpdGlvbiBSZXZlbnVlIC8gVG90YWwgQ29zdDwvYj4gPC9icj48L2JyPg0KIVtdKC4uLzAzIFZpc3VhbGl6YXRpb25zL0Nyb3NzdGFiICsgS1BJIHcgU2V0IDIgKFRhYmxlYXUpLnBuZyl7IHdpZHRoPTQ5JSB9DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMva3BpMi5wbmcpeyB3aWR0aD00OSUgfQ0KVGhlc2UgY3Jvc3N0YWJzIChUYWJsZWF1IGxlZnQsIFNoaW55IHJpZ2h0KSB4eHh4DQo8L2JyPjwvYnI+DQoNCjxiPk1hcCAxOiBSZWdpb24gQ29zdCBvZiBBdHRlbmRhbmNlIChJbnN0cnVjdGlvbmFsIEV4cGVuZGl0dXJlcyAvIENvc3Qgb2YgQXR0ZW5kYW5jZSk8L2I+IDwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9Dcm9zc3RhYiBNYXAgMSAoVGFibGVhdSkucG5nKXsgd2lkdGg9NDklIH0NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9NYXAxLnBuZyl7IHdpZHRoPTQ5JSB9DQpUaGVzZSBtYXBzIChUYWJsZWF1IGxlZnQsIFNoaW55IHJpZ2h0KSBkZW1vbnN0cmF0ZSB0aGUgZGlzdHJpYnV0aW9uIG9mIGluc3RydWN0aW9uYWwgZXhwZW5kaXR1cmUgLyBjb3N0IG9mIGF0dGVuZGFuY2UgcmF0aW8gYWNyb3NzIHRoZSBVbml0ZWQgU3RhdGVzLCB3aGVyZSBkYXJrZXIgY29sb3JzIGluZGljYXRlIGhpZ2hlciByYXRpb3MuDQoNCjwvYnI+PC9icj4NCg0KPGI+TWFwIDI6IFR1aXRpb24gUmV2ZW51ZSB0byBUb3RhbCBDb3N0PC9iPiA8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQ3Jvc3N0YWIgTWFwIDIgKFRhYmxlYXUpLnBuZyl7IHdpZHRoPTQ5JSB9DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvTWFwMi5wbmcpeyB3aWR0aD00OSUgfQ0KVGhlc2UgbWFwcyAoVGFibGVhdSBsZWZ0LCBTaGlueSByaWdodCkgZGVtb25zdHJhdGUgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0dWl0aW9uIHJldmVudWUgLyB0b3RhbCBjb3N0IHJhdGlvIGFjcm9zcyB0aGUgVW5pdGVkIFN0YXRlcywgd2hlcmUgZGFya2VyIGNvbG9ycyBpbmRpY2F0ZSBoaWdoZXIgcmF0aW9zLiANCjwvYnI+PC9icj4NCg0KDQo8Yj5CYXJjaGFydDogSW5zdHJ1Y3Rpb25hbCBFeHBlbnNlIHBlciBUeXBlIG9mIEluc3R1dGl0aW9uPC9iPiA8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQmFyY2hhcnQgKFRhYmxlYXUpLnBuZyl7IHdpZHRoPTMwJSB9DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQmFyY2hhcnQgSUQgU2V0cyBNYXAgKFRhYmxlYXUpLnBuZyl7IHdpZHRoPTMwJSB9DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvYmFyY2hhcnQucG5nKXsgd2lkdGg9MzAlIH08L2JyPg0KVGhlc2UgYmFyY2hhcnRzIChUYWJsZWF1IGxlZnQsIFNoaW55IHJpZ2h0KSB4eHh4DQo8L2JyPjwvYnI+DQoNCiMqKlNoaW55IFZpc3VhbGl6YXRpb24gYW5kIFB1Ymxpc2hlZCBBcHBsaWNhdGlvbioqDQoqKkRlc2NyaXB0aW9uOioqIEZ1bGwgc2l6ZSBzdGF0aWMgLnBuZ3Mgb2YgdGhlIFNoaW55IGFwcGxpY2F0aW9uLCBhcyB3ZWxsIGFzIGEgbGluayB0byB0aGUgbGl2ZSBwdWJsaXNoZWQgdmVyc2lvbi48YnI+DQoNClB1Ymxpc2hlZCBMaW5rOjwvYnI+DQpodHRwczovL2VoamtpbS5zaGlueWFwcHMuaW8vc2hpbnlmaW5hbC88L2JyPg0KDQpCb3hwbG90OiBBdmVyYWdlIENvc3Qgb2YgQXR0ZW5kYW5jZSBmb3IgVHlwZSBvZiBTY2hvb2w8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQm94cGxvdC5wbmcpPGJyPjxicj48YnI+DQoNCkhpc3RvZ3JhbTogU0FUIEF2ZXJhZ2VzIGZvciBVbml2ZXJzaXRpZXM8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvSGlzdG9ncmFtLnBuZyk8YnI+PGJyPjxicj4NCg0KU2NhdHRlcnBsb3Q6IEluc3RydWN0aW9uYWwgRXhwZW5kaXR1cmVzIHZzLiBOZXQgdHVpdGlvbjwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9TY2F0dGVycGxvdC5wbmcpPGJyPjxicj48YnI+DQoNCkNyb3NzdGFiIDE6IEluc3RydWN0aW9uYWwgRXhwZW5kaXR1cmVzL0Nvc3Qgb2YgQXR0ZW5kYW5jZTwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9rcGkxLnBuZyk8YnI+PGJyPjxicj4NCg0KQ3Jvc3N0YWIgMjogVHVpdGlvbiBSZXZlbnVlIC8gVG90YWwgQ29zdDwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9rcGkyLnBuZyk8YnI+PGJyPjxicj4NCg0KTWFwIDE6IFJlZ2lvbiBDb3N0IG9mIEF0dGVuZGFuY2UgKEluc3RydWN0aW9uYWwgRXhwZW5kaXR1cmVzIC8gQ29zdCBvZiBBdHRlbmRhbmNlKTwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9NYXAxLnBuZyk8YnI+PGJyPjxicj4NCg0KTWFwIDI6IFR1aXRpb24gUmV2ZW51ZSB0byBUb3RhbCBDb3N0PC9icj48L2JyPg0KIVtdKC4uLzAzIFZpc3VhbGl6YXRpb25zL01hcDIucG5nKTxicj48YnI+PGJyPg0KDQpCYXJjaGFydDogSW5zdHJ1Y3Rpb25hbCBFeHBlbnNlIHBlciBUeXBlIG9mIEluc3R1dGl0aW9uPC9icj48L2JyPg0KIVtdKC4uLzAzIFZpc3VhbGl6YXRpb25zL2JhcmNoYXJ0LnBuZyk8YnI+PGJyPjxicj4NCg0KDQojKipUYWJsZWF1IC8gVGFibGVhdSBBY3Rpb24gR2VuZXJhdGVkIFZpc3VhbGl6YXRpb25zKioNCioqRGVzY3JpcHRpb25zOioqIEZ1bGwgc2l6ZSBzdGF0aWMgLnBuZ3Mgb2YgdGhlIHRhYmxlYXUgdmlzdWFsaXphdGlvbnMuIFJlZmVyIHRvIHZpc3VhbGl6YXRpb24gY2FwdGlvbnMgZm9yIGluZGl2aWR1YWwgZGVzY3JpcHRpb25zLg0KDQpCb3hwbG90OiBBdmVyYWdlIENvc3Qgb2YgQXR0ZW5kYW5jZSBmb3IgVHlwZSBvZiBTY2hvb2w8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQXZlcmFnZSBDb3N0IG9mIEF0dGVuZGFuY2UgZm9yIFR5cGUgb2YgU2Nob29sIEJveHBsb3QgKFRhYmxlYXUpLnBuZyk8YnI+PGJyPjxicj4NCg0KSGlzdG9ncmFtOiBTQVQgQXZlcmFnZXMgZm9yIFVuaXZlcnNpdGllczwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9TQVRfQVZHIEhpc3RvZ3JhbSAoVGFibGVhdSkucG5nKTxicj48YnI+PGJyPg0KDQpTY2F0dGVycGxvdDogSW5zdHJ1Y3Rpb25hbCBFeHBlbmRpdHVyZXMgdnMuIE5ldCB0dWl0aW9uPC9icj48L2JyPg0KIVtdKC4uLzAzIFZpc3VhbGl6YXRpb25zL1NjYXR0ZXIgUGxvdCAoVGFibGVhdSkucG5nKTxicj48YnI+PGJyPg0KDQpDcm9zc3RhYiAxOiBJbnN0cnVjdGlvbmFsIEV4cGVuZGl0dXJlcy9Db3N0IG9mIEF0dGVuZGFuY2U8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQ3Jvc3N0YWIgKyBLUEkgdyBTZXQgMSAoVGFibGVhdSkucG5nKTxicj48YnI+PGJyPg0KDQpDcm9zc3RhYiAyOiBUdWl0aW9uIFJldmVudWUgLyBUb3RhbCBDb3N0PC9icj48L2JyPg0KIVtdKC4uLzAzIFZpc3VhbGl6YXRpb25zL0Nyb3NzdGFiICsgS1BJIHcgU2V0IDIgKFRhYmxlYXUpLnBuZyk8YnI+PGJyPjxicj4NCg0KTWFwIDE6IFJlZ2lvbiBDb3N0IG9mIEF0dGVuZGFuY2UgKEluc3RydWN0aW9uYWwgRXhwZW5kaXR1cmVzIC8gQ29zdCBvZiBBdHRlbmRhbmNlKTwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9Dcm9zc3RhYiBNYXAgMSAoVGFibGVhdSkucG5nKTxicj48YnI+PGJyPg0KDQpNYXAgMjogVHVpdGlvbiBSZXZlbnVlIHRvIFRvdGFsIENvc3Q8L2JyPjwvYnI+DQohW10oLi4vMDMgVmlzdWFsaXphdGlvbnMvQ3Jvc3N0YWIgTWFwIDIgKFRhYmxlYXUpLnBuZyk8YnI+PGJyPjxicj4NCg0KQmFyY2hhcnQ6IEluc3RydWN0aW9uYWwgRXhwZW5zZSBwZXIgVHlwZSBvZiBJbnN0dXRpdGlvbjwvYnI+PC9icj4NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9CYXJjaGFydCAoVGFibGVhdSkucG5nKXsgd2lkdGg9NDklIH0NCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9CYXJjaGFydCBJRCBTZXRzIE1hcCAoVGFibGVhdSkucG5nKXsgd2lkdGg9NDklIH08YnI+PGJyPjxicj4NCg0KDQoNCg0KPC9jZW50ZXI+DQo=